const {WHITE_LIST,TOKEN_KEY}=require("../config/index")

const jwt=require("jsonwebtoken")

const middlewareHandle=async (ctx,next)=>{
    // 把登录 注册 刨除在外  因为 登录 注册 并没有登录成功
    // 获取到当前的路由   /api/login
    const {url}=ctx.request
    // 判断白名单里包不包含 当前 路由
    const flag=WHITE_LIST.includes(url)
    if(!flag){
        const token=ctx.request.headers["authorization"];
        if(!token){
            //未登录
            ctx.status=401
            ctx.body={
                code:"1002",
                msg:"token不存在"
            }
        }else{
            // 如果token存在 需要拿到失效时间
            const {  exp }=jwt.verify(token,TOKEN_KEY);
            if(+new Date()>exp){
                ctx.status=401
                ctx.body={
                    code:"1002",
                    msg:"token已失效"
                }
            }else{
                await next()
            }
        }
    }else{
        await next()
    }
}

module.exports={
    middlewareHandle
}